As an increasing number of applications and services are being made available over networks such as the Internet, an increasing number of content, application, and/or service providers are turning to technologies such as cloud computing. Cloud computing, in general, is an approach to providing access to electronic resources through services, such as Web services, where the hardware and/or software used to support those services is dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software needed.
In this context, many cloud computing providers utilize virtualization to allow multiple users to share the underlying hardware and/or software resources. Virtualization can allow computing servers, storage device or other resources to be partitioned into multiple isolated instances (i.e. virtual machines) that are associated with (e.g., owned by) a particular user (e.g., customer). Each virtual machine conventionally includes its own operating system that is capable of executing one or more applications on behalf of the user. Virtualization can thus enable various users to run their applications remotely, using on the resources (e.g., host servers, etc.) of the cloud computing provider or operator. However, providing a conventional virtual computing environment has a number of limitations. For example, certain customers may be particularly sensitive to security issues that may arise as a result of executing virtual machines on remote resources. Because customers do not have physical access to these resources, many customers would like to obtain some sort of cryptographic assurance that the resources have not been tampered with by malicious users or otherwise compromised.